package br.com.JZSolution.modelo;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Produto {
 
	public enum TipoQuantidadeVenda{ 
		UNIDADE("Un","Unidade"), PESO("Kg","Quilo"), METRO("m","Metro"), METRO2("m2","Metro²"), METRO3("m3","Metro³") ;   
		
		String tipoUnidade;
		String nomeUnidade;
		
		TipoQuantidadeVenda(String tipo,String nome){
			tipoUnidade = tipo;
			nomeUnidade = nome;
		}
		
		public String getNome(){
			return nomeUnidade;
		}
		
		public String getUnidadeMedida(){
			return tipoUnidade;
		};
		
	};
	
	/**
	 * Retorna o Tipo de unidade de medida na venda de acordo com o nome recebido do combo box
	 * @param nome do tipo unidade medida
	 * @return tipoQuantidadeVenda
	 */
	public static TipoQuantidadeVenda tipoQuantidadeVendaPorNome(String nome){
		for(TipoQuantidadeVenda t :TipoQuantidadeVenda.values()){
			if(t.getNome().equals(nome))
				return t;
		}
		return null;
	}
	
	@Id
	private long codigo;
	 
	private long quantidadeAtualEstoque;
	 
	private long quantidadeMinimaEstoque;
	 
	private double quantidadeNaVenda;
	
	private TipoQuantidadeVenda tipoQuantidadeVenda;
	
	private String nome;
	
	private String descricao;
	 
	private double preco;
	 
	private double desconto;
	 
	@ManyToOne
	private Empresa empresa;

	public Produto(String descricao, TipoQuantidadeVenda tipoQuantidade, Empresa empresa){
		this.descricao = descricao;
		this.empresa = empresa;
		this.tipoQuantidadeVenda = tipoQuantidade;
	}
	public Produto(){}
	public long getCodigo() {
		return codigo;
	}
	public TipoQuantidadeVenda getTipoQuantidadeVenda() {
		return tipoQuantidadeVenda;
	}
	public void setTipoQuantidadeVenda(TipoQuantidadeVenda tipoQuantidadeVenda) {
		this.tipoQuantidadeVenda = tipoQuantidadeVenda;
	}
	public void setCodigo(long codigo) {
		this.codigo = codigo;
	}

	public long getQuantidadeAtualEstoque() {
		return quantidadeAtualEstoque;
	}

	public void setQuantidadeAtualEstoque(long quantidadeAtual) {
		this.quantidadeAtualEstoque = quantidadeAtual;
	}

	public long getQuantidadeMinimaEstoque() {
		return quantidadeMinimaEstoque;
	}

	public void setQuantidadeMinimaEstoque(long quantidadeMinima) {
		this.quantidadeMinimaEstoque = quantidadeMinima;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String nome) {
		this.descricao = nome;
	}
	/**
	 * Referente a unidade
	 */
	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

	public double getDesconto() {
		return desconto;
	}

	public void setDesconto(double desconto) {
		this.desconto = desconto;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	
	public double getQuantidadeNaVenda() {
		return quantidadeNaVenda;
	}
	
	public void setQuantidadeNaVenda(double quantidadeNaVenda) {
		this.quantidadeNaVenda = quantidadeNaVenda;
	}
	/**
	 * total do produto nada venda 
	 * 
	 * 
	 *TODO Fazer funcionar de acordo com a unidade de medida 
	 *
	 *
	 *
	 */
	public double getTotalNaVenda() {
		return preco*quantidadeNaVenda;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getNome() {
		return nome;
	}

}
 
